{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 12. Continuous Latent Variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn import datasets\n",
    "%matplotlib inline\n",
    "\n",
    "from prml.dimreduction import Autoencoder, BayesianPCA, PCA\n",
    "\n",
    "np.random.seed(1234)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris = datasets.load_iris()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 12.1 Principal Component Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pca = PCA(n_components=2)\n",
    "Z = pca.fit_transform(iris.data)\n",
    "plt.scatter(Z[:, 0], Z[:, 1], c=iris.target)\n",
    "plt.gca().set_aspect('equal', adjustable='box')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 12.1.4 PCA for high-dimensional data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 5 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mnist = datasets.fetch_openml(\"mnist_784\")\n",
    "mnist3 = mnist.data[np.random.choice(np.where(mnist.target == '3')[0], 200)]\n",
    "pca = PCA(n_components=4)\n",
    "pca.fit(mnist3)\n",
    "plt.subplot(1, 5, 1)\n",
    "plt.imshow(pca.mean.reshape(28, 28))\n",
    "plt.axis('off')\n",
    "for i, w in enumerate(pca.W.T[::-1]):\n",
    "    plt.subplot(1, 5, i + 2)\n",
    "    plt.imshow(w.reshape(28, 28))\n",
    "    plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 12.2.2 EM algorithm for PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pca = PCA(n_components=2)\n",
    "Z = pca.fit_transform(iris.data, method=\"em\")\n",
    "plt.scatter(Z[:, 0], Z[:, 1], c=iris.target)\n",
    "plt.gca().set_aspect('equal', adjustable='box')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 12.2.3 Bayesian PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def create_toy_data(sample_size=100, ndim_hidden=1, ndim_observe=2, std=1.):\n",
    "    Z = np.random.normal(size=(sample_size, ndim_hidden))\n",
    "    mu = np.random.uniform(-5, 5, size=(ndim_observe))\n",
    "    W = np.random.uniform(-5, 5, (ndim_hidden, ndim_observe))\n",
    "\n",
    "    X = Z.dot(W) + mu + np.random.normal(scale=std, size=(sample_size, ndim_observe))\n",
    "    return X\n",
    "\n",
    "def hinton(matrix, max_weight=None, ax=None):\n",
    "    \"\"\"Draw Hinton diagram for visualizing a weight matrix.\"\"\"\n",
    "    ax = ax if ax is not None else plt.gca()\n",
    "\n",
    "    if not max_weight:\n",
    "        max_weight = 2 ** np.ceil(np.log(np.abs(matrix).max()) / np.log(2))\n",
    "\n",
    "    ax.patch.set_facecolor('gray')\n",
    "    ax.set_aspect('equal', 'box')\n",
    "    ax.xaxis.set_major_locator(plt.NullLocator())\n",
    "    ax.yaxis.set_major_locator(plt.NullLocator())\n",
    "\n",
    "    for (x, y), w in np.ndenumerate(matrix):\n",
    "        color = 'white' if w > 0 else 'black'\n",
    "        size = np.sqrt(np.abs(w) / max_weight)\n",
    "        rect = plt.Rectangle([y - size / 2, x - size / 2], size, size,\n",
    "                             facecolor=color, edgecolor=color)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    ax.autoscale_view()\n",
    "    ax.invert_yaxis()\n",
    "    plt.xlim(-0.5, np.size(matrix, 1) - 0.5)\n",
    "    plt.ylim(-0.5, len(matrix) - 0.5)\n",
    "\n",
    "X = create_toy_data(sample_size=100, ndim_hidden=3, ndim_observe=10, std=1.)\n",
    "pca = PCA(n_components=9)\n",
    "pca.fit(X)\n",
    "bpca = BayesianPCA(n_components=9)\n",
    "bpca.fit(X, initial=\"eigen\")\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.title(\"PCA\")\n",
    "hinton(pca.W)\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.title(\"Bayesian PCA\")\n",
    "hinton(bpca.W)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### 12.4.2 Autoassociative neural networks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "autoencoder = Autoencoder(4, 3, 2)\n",
    "autoencoder.fit(iris.data, 10000, 1e-3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Z = autoencoder.transform(iris.data)\n",
    "plt.scatter(Z[:, 0], Z[:, 1], c=iris.target)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
